package com.yc.thread;

public class 线程属性和方法 {

    public static void main(String[] args) {

        // 构造函数定义线程名
       /* Thread t = new Thread("线程名");
        Runnable r = null;
        t = new Thread("线程名", r);

        // 属性
        long id = t.getId();  // id 线程唯一表示
        t.getName();  // 线程名
        t.getPriority();// 线程优先级  取值范围 1~10  默认 5, 10 最高
        t.getState();  // 线程状态
        t.isAlive();   // 判断线程是否处于活动窗体
        t.setDaemon(true);  // 设置守护线程 ( 精灵线程)

        // 实例方法
        t.start(); // 启动线程
        t.join();  // 加入当前线程
        t.interrupt();  // 终止线程
        t.stop();   // 曾经的中断线程, 已废弃

        //静态方法
        Thread.currentThread();// 获取当前线程对象
        Thread.sleep(1000); // 线程休眠 单位:毫秒*/
        //Thread.yield(); // 让渡
        /**
         * 线程分类
         * 1. 主线程  main 方法运行所在的线程
         * 2. 父,子线程  , 在某线程的内部创建的线程, 就是该线程子线程
         *      默认情况下, 父线程会等待子线程执行完毕才结束, 尽管父线程代码已经执行完
         * 3. 精灵线程
         *      父线程会直接结束精灵线程
         */

        Thread.yield();
        Thread t = new Thread("子线程"){
            // 匿名类
            public void run(){
                // 获取当前线程
                Thread ct = Thread.currentThread();
                System.out.println(ct.getName() + "开始执行");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(ct.getName() + "执行结束");
            }
        };
        t.setDaemon(true);  // 在start 前设置 子线程为 精灵线程, 父线程会直接结束精灵线程
        t.start();

        Thread ct = Thread.currentThread();
        System.out.println(ct.getName() + "执行完成");

    }

}
